1. Field
This disclosure relates generally to a memory array and, more specifically, to a scalable interface for a memory array.
2. Related Art
Traditionally, memory array libraries have been created that include memory arrays with a different number of physical read and write ports. For example, a standard memory array library may include: a first memory array having one read port and one write port; a second memory array having two read ports and one write port; a third memory array having one read port and two write ports; and a fourth memory array having two read ports and two write ports. In this case, when a new application has required a memory array with more that two read ports or two write ports, a new custom memory array has generally been designed for the new application. Unfortunately, designing a custom memory array that supports a desired number of simultaneous memory accesses can be time-consuming and relatively expensive.
To avoid the expense associated with designing a custom memory array, at least some designers have selected an existing memory array (that does not include a desired number of physical read or write ports) from a memory array library and designed collision avoidance logic to facilitate access to the memory array (by multiple requesters) via a shared port of the memory array. In this case, a handshaking protocol (that indicates read and/or write completion) has been employed in conjunction with the collision avoidance logic to allow different requesters to access the memory array using the shared port (e.g., a read port and/or a write port). Unfortunately, the collision avoidance approach only facilitates sequential port access and generally exhibits non-fixed timing for accesses (e.g., an initial read may take four cycles and subsequent reads may take more or less than four cycles) and may adversely affect memory array function, as well as memory array performance. To avoid the expense associated with designing a custom memory array, at least some designers have implemented redundant memory arrays to provide simultaneous access to information associated with a single port of a memory array to multiple requestors. However, implementation of redundant memory arrays increases an area of an associated integrated circuit (IC) and also requires implementation of a coherency scheme to ensure that the same information is maintained in the redundant memory arrays.